約 5,148,016 件
https://w.atwiki.jp/wiki3_wwa/pages/15.html
user.htmlの中身 背景、文字の色を変える リンクを付けてみる ここではHTML技術の一部を解説します。 編集するのは主に「user.html」です。 ファイルの名前を変更している場合も、HTMLファイルを編集してください。 user.htmlの中身 まずはuser.htmlの中身を見てみます。 ダブルクリックすると、ブラウザが起動してゲーム画面が表示されます。 (作成ツールから「マップデータをブラウザで見る」でもOK) ゲーム画面の外を、マウスで右クリックします。 ずらりと並んだメニューの中ほどにある、「ソースの表示」をクリックします。 メモ帳が起動して、 以下のような文章が表示されるはずです。 HTML HEAD TITLE World Wide Adventure /TITLE /HEAD BODY BGCOLOR=#A0A0A0 CENTER APPLET CODE="WWA.class" WIDTH=560 HEIGHT=440 PARAM NAME=paramMapName VALUE="wwamap.dat" このブラウザには、Java実行環境がインストールされていません。 BR 詳細は A HREF="http //www.wwajp.com/wwafaq.html" WWAのよくある質問 /A をどうぞ。 /APPLET BR Internet RPG " A HREF="http //www.wwajp.com/" World Wide Adventure /A " (C)1996-2004 NAO /CENTER /BODY /HTML ※赤字の部分は、使用しているマップデータによって名前が違います。 表示されたこの文章が、user.htmlの中身、「HTMLソース」です。 このソースを、タグと呼ばれる命令を使って編集すると、 ブラウザに「こう表示しなさい」と指示することが出来ます。 編集の基本は 「文章を書き足す」「上書き保存」「ブラウザで更新ボタンを押して確認」 の繰り返しです。 では、実際にやってみましょう。 背景、文字の色を変える もともとのゲームページでは、「背景が灰色」で「文字が黒」です。 背景の色は何も指定しなければ白に、 文字の色は指定しなければ黒になります。 ということは、背景の色はすでに指定されているわけです。 ソースをよく見てみると、背景を灰色にしている部分が見つかります。 HTML HEAD TITLE World Wide Adventure /TITLE /HEAD BODY BGCOLOR=#A0A0A0 以下略 BGCOLORは、「背景の色はこれにします」と言う命令です。 #A0A0A0の部分を変更すると色が変わります 。やってみましょう。 #000000が黒 #FFFFFFが白 必ず6桁になります(左から2桁ずつ、#FF0000=赤、#00FF00=緑、#0000FF=青) 0~9+A~Fの16文字で表されていて、0が最低値、Fが最高値。 命令が上手くいかないときは、#や=を確認してください。 消してしまったり、増やしてしまったりすると、上手く命令が伝わりません。 これで好きな色を背景色にすることが出来たでしょうか? 続けて、文章の色も変えてみましょう。 ゲームの下にある「Internet RPG」の文字で確認します。 ソースに青い文字の分を書き足します。 (直前に半角のスペースが入っています。忘れずに追加してください。) HTML HEAD TITLE World Wide Adventure /TITLE /HEAD BODY BGCOLOR=#A0A0A0 TEXT="#FF0000" 以下略 Internet RPGの文字は、真っ赤になりましたか? TEXTは、ファイル全体の文字の色を指定する命令です。 色の指定方法は、背景と同じです。 この2つを変更するだけでも、ゲームの印象は変わります。 色の組み合わせを試してみてください。 リンクを付けてみる
https://w.atwiki.jp/mvc3/pages/94.html
NETWORK MODE NETWORK MODERANKED MATCHQUICK MATCH CUSTOM MATCH PLAYER MATCH SEARCH LOBBY CREATE LOBBY LEADERBOARDS コメント RANKED MATCH 段位ポイントが増減する通信対戦を行うモード。 対戦結果によって段位ポイントが増減し、公式戦績として記録される。そして、その記録は各種ランキングに反映される。 QUICK MATCH 対戦相手の条件を設定しないで相手を捜すモード。 CUSTOM MATCH 地域、言語、段位などの条件に合う相手を捜すモード。 PLAYER MATCH ランクマッチ同様に、オンライン対戦が楽しめるモード。 段位ポイントの増減はなく、戦績は記録されない。 カスタムマッチと同様に、対戦相手を捜すことができる。 SEARCH LOBBY 条件にあった部屋を検索できる。 CREATE LOBBY 自分がホストとなり、プレイヤーが集まるロビーを作成するモード。 部屋に入れる人数、フレンド優先枠、地域、言語、段位、ロビータイトルを設定して作成できる。 LEADERBOARDS ネットワークに接続している世界中のプレイヤーの対戦成績をランキング形式で見ることができるモード。 ランキングには、段位ランキング、勝利数ランキング、連勝数ランキング、シングルスコアランキングがある。 ページトップへ▲ コメント 情報を提供したい、または間違いを修正したいけどwiki編集法がわからない、自信がない、面倒だという方はこちらのコメント欄にお願いします。 その他意見もこちらへどうぞ。質問はよくある質問のコメント欄によろしくお願いします。 当店はHで、素敵なセレブ達が多数在籍しております。(●^口^●)→ http //sns.44m4.net/ -- (翔子) 2012-08-22 01 48 31 That kind of thkinnig shows you re on top of your game -- (Marcellinho) 2013-02-03 18 07 07 名前 コメント すべてのコメントを見る ページトップへ▲
https://w.atwiki.jp/oranet314/pages/11.html
【障害事項】 以下の事象が発生し、Normal接続・SYSDBA接続のどちらにおいてもDBに接続できない。 ①lsnrctlスクリプトによりリスナーを起動すると、 「リスナーはサービス認識していない」とコンソールに出力される。 ------------------------------------------------------------------------------------ C \Documents and Settings\xxxxxx lsnrctl start LSNRCTL for 32-bit Windows Version 10.2.0.1.0 - Production on 25-9月 -2008 01 47 45 Copyright (c) 1991, 2005, Oracle. All rights reserved. tnslsnrを起動しています。お待ちください... TNSLSNR for 32-bit Windows Version 10.2.0.1.0 - Production システム・パラメータ・ファイルは K \oracle\product\10.2.0\db_1\network\admin\listener.oraです。 ログ・メッセージを K \oracle\product\10.2.0\db_1\network\log\listener.logに書き込 みました。 リスニングしています (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=haga)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxx)(PORT=1521)))に接続中 リスナーのステータス ------------------------ 別 名 LISTENER バージョン TNSLSNR for 32-bit Windows Version 10.2.0.1.0 - Production 開始日 25-9月 -2008 01 47 48 稼 働時間 0 日 0 時間 0 分 3 秒 トレース・レベル off セキュリティ ON Local OS AuthenticationSNMP OFF パラメータ・ファイ ル K \oracle\product\10.2.0\db_1\network\admin\listener.ora ログ・ファイル K \oracle\product\10.2.0\db_1\network\log\listener.log リスニング・エンドポイントのサマリー... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxxx)(PORT=1521))) リスナーはサービスをサポートしていません。 コマンドは 正常に終了しました。 ------------------------------------------------------------------------------------ ②SYSDBA接続しようとするとエラーが発生し、接続できない。 ------------------------------------------------------------------------------------ SQL connect sys/manager as sysdba ERROR ORA-12560 TNS プロトコル・アダプタ・エラーが発生しました ------------------------------------------------------------------------------------ 【周辺の知識】 ●リスナー、動的なサービス登録の特徴 ・動的なサービス登録の場合はリスナーがインスタンスの状態等を把握しているため 接続時フェイルオーバーや接続ロードバランシングを行うことができる。 構成が簡単にできるというのもメリット ・DBインスタンスからリスナーへの自動登録はインスタンス起動時と 起動後に一定間隔(PMONが担当)で行われるのでリスナーを後から 立ち上げたり、再起動すると登録が行われておらず接続できない 時間が発生する ●静的なサービス登録の方法 ①EMを起動。SYSTEMでログイン。 ②「ホーム」から「リスナー」をクリックし遷移 ③「編集」をクリック、Admin権限を持つホストユーザーのアカウント情報を入力し、ログイン。 ④「静的データベース登録」→「追加」を押下 ⑤適切な「サービス名」「Oracleホーム・ディレクトリ」「Oracleシステム識別子(SID)」を入力し、「OK」を押下 ⑥リスナープロセスを再起動 ⑦listener.oraを確認すると、 ------------------------------------------------------------------------- # listener.ora Network Configuration File K \oracle\product\10.2.0\db_1\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = core) (SID_NAME = core) (ORACLE_HOME = K \oracle\product\10.2.0\db_1) ) ) LOGGING_LISTENER = OFF LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx)(PORT = 1521)) ) TRACE_LEVEL_LISTENER = OFF ------------------------------------------------------------------------- となり、記述が変更されていることがわかる。 【解決方法】 上記の「静的なサービス登録」を行った結果、上記障害は解決された。
https://w.atwiki.jp/cz8686/pages/17.html
[HTML] ヘッダ部記述 !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" HTML HEAD META HTTP-EQUIV="Pragma" CONTENT="no-cache" META HTTP-EQUIV="Cache-Control" CONTENT="no-cache,must-revalidate" META HTTP-EQUIV="Expires" CONTENT="0" META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS" TITLE ページタイトル /TITLE /HEAD [HTML] 表示バー table width="480" border="0" cellspacing="0" cellpadding="5" tr td height="50" width="15" bgcolor="#0000CC" /td td height="50" width="385" bgcolor="#CCCCFF" font size="3" b こんな感じで表示 /b /font /td /tr /table [HTML]作成者フッター TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0" TR TD ALIGN="RIGHT" HR Copyright(C)なんとか会社, Ltd. 2008. All rights reserved. /TD /TR /TABLE
https://w.atwiki.jp/mosakabe/pages/51.html
!DOCTYPE html html lang="ja" head meta charset="UTF-8" title サイトのタイトル /title link rel="stylesheet" type="text/css" href="css/html5reset.css" / !--[if lt IE 9] script src="http //html5shiv.googlecode.com/svn/trunk/html5.js" /script ![endif]-- /head body //ここにサイトに表示するコンテンツ内容を記述 /body /html
https://w.atwiki.jp/hitkik/pages/23.html
Windows で、HTTPでのやり取りを眺めるツール。 HTTP debug tool IE ---- Fiddler2 http //www.fiddler2.com/Fiddler2/firstrun.asp extension http //www.fiddler2.com/fiddler2/extensions.asp Firefox ---- Firebug 文字コード明示 html lang="ja" まず、 html の中で使用言語を示します。ja は日本語を示します。 日本語以外では en (英語)、fr (フランス語)、de (ドイツ語)、zh (中国語) などがあります。 meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" METAタグのContent-typeを明示すると同時に文字コードも明示します。 Shift_JIS 以外は EUC-JP, iso-2022-jp (JIS), UTF-8(Unicode) などがあります。 Shift_JIS はアンダーバー。EUC-JP と iso-2022-jp, UTF-8はハイフンです。 × content="text/html;" charset="Shift_JIS" ○ content="text/html; charset=Shift_JIS" 行間を広げる BODY STYLE="line-height 150%" line-heightの活用 div style="font 900 46pt;line-height 6pt;" div style="color #404040;text-indent 50px;" abc /div div style="color #808080;text-indent 100px;" def /div div style="color red;text-indent 150px;" ghi /div /div スタイルシートを使ったテキストフィルタ http //www.tohoho-web.com/css/filter.htm スタイルシートクイックレファレンス http //www.htmq.com/style/index.shtml 以下広告
https://w.atwiki.jp/mccc/pages/47.html
このページではHTTP APIについて解説する。 参考資料: HTTP API 執筆時のバージョン: ComputerCraft 1.56 for Minecraft 1.6.2 HTTP API各メソッドのヘッダ request get post HTTP API HTTPによりインターネット上のサーバーへGET/POSTリクエストを送信し、ウェブサイトをダウンロードすることができるAPI。 このAPIを利用するには、前もってComputerCraft.cfgのenableAPI_httpをtrueにしておく必要がある。設定がfalse(デフォルト)の場合、このAPI自体コンピュータに読み込まれない。 文字列をURLエンコードするにはtextutils.urlEncode関数を利用するとよい。 なお、ここでは(プロトコルとしての)HTTPについての解説は行わない。 各メソッドのヘッダ (どんなヘッダが送信されているのか気になる人向け) HTTP APIではプレイヤーが任意のヘッダを指定することはできず、またComputerCraft側でも特にヘッダを指定していないため、Javaデフォルトのヘッダで送信されているものと思われる。 以下は各メソッドで送信されるリクエスト行およびヘッダ行の例。ちなみに、ゲーム内でpastebinプログラムを利用してPastebinでプログラムファイルを取得・投稿した時のもの(Javaバージョンは1.7.0 25)。 GETの例 GET /raw.php?i=smLqWBif HTTP/1.1 User-Agent Java/1.7.0_25 Host pastebin.com Accept text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection keep-alive POSTの例 POST /api/api_post.php HTTP/1.1 User-Agent Java/1.7.0_25 Host pastebin.com Accept text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection keep-alive Content-Length 219 request dan200.computer.core.apis.HTTPAPI で定義 http.request( url[, postData]) URLurl(文字列)にHTTPリクエストを送信する。 postData(文字列)を指定すると、POSTメソッドでメッセージボディとして送信される。postDataが省略またはnilの時はGETメソッドで送信される 戻り値:nil レスポンスはos.pullEvent関数でhttp_successまたはhttp_failureイベントを捕捉することで取得する。そのため、レスポンスを非同期的に取得することができる。 例: local url = "http //example.com/" http.request(url) while true do local event, sourceUrl, file = os.pullEvent() if event == "http_success" and sourceUrl == url then print(file.readAll()) file.close() break elseif event == "http_failure" and sourceUrl == url then print("Server didn t respond.") break end end http //example.com/(IANAのExampleドメイン)からウェブページをダウンロードする。 成功した場合はページの内容(HTML)が、失敗(タイムアウト)した場合は"Server didn t respond."が表示される。 get assets\computercraft\lua\bios.lua で定義 http.get( url ) URLurl(文字列)にHTTP GETリクエストを送信し、レスポンスを取得する 戻り値:テーブル型。取得したウェブサイトのファイルハンドル。ただし、取得に失敗した場合はnilが返る リクエストに対するレスポンスが返ってくるまで処理を停止する。内部的にはhttp.request関数とos.pullEvent関数を利用している。 例: local file = http.get("http //example.com/") if file ~= nil then print(file.readAll()) file.close() else print("Server didn t respond.") end http //example.com/(IANAのExampleドメイン)からウェブページをダウンロードする。 成功した場合はページの内容(HTML)が、失敗(タイムアウト)した場合は"Server didn t respond."が表示される。 post assets\computercraft\lua\bios.lua で定義 http.post( url, postData) URLurl(文字列)にHTTP POSTリクエストを送信し、レスポンスを取得する。postData(文字列)がメッセージボディとして送信される 戻り値:テーブル型。取得したウェブサイトのファイルハンドル。ただし、取得に失敗した場合はnilが返る リクエストに対するレスポンスが返ってくるまで処理を停止する。内部的にはhttp.request関数とos.pullEvent関数を利用している。 postDataが省略またはnilの場合は代わりに""(長さ0文字列)が使われる。
https://w.atwiki.jp/ohden/pages/730.html
Network network図作成 https //www.cloudcraft.co OSI参照モデル Lerning GNS3 networkの勉強に使えるらしい。 ルーターをエミュレートするIOS(機器のimage file)が必要。ciscoの資格取れると良いので、メモっとく。 https //www.n-study.com/how-to-use-gns3/how-to-download-ios/ etc ・ping ぴんぐと読むヤツが居るけど、ぴんが正解。 ・TTL(Time To Live) ネットワークに投げられたIPデータグラムが持ってる。ルーターを通る度に1ずつ減ってって0になったら、そのIPデータグラムは破棄される。 TTLの初期値はOS毎に決まってる。 例えば、pingを要求すると、相手がIPデータグラムを作成する。このIPデータグラムのTTLには、OS毎に定義された初期値が格納される。返送されたIPデータグラムのTTLは、ルーターを通過する度に1ずつ減ってって、要求者の元に届く。 なので、IPデータグラムのTTLを見るとWindowsなのかLinux/MacOSなのかUNIXなのかくらいは分かる。 OS TTL初期値 Windows 128 Linux/MacOS 64 UNIX/Solaris 255 128から64減ったらWindowsかLinuxか区別付かんじゃんか!ってヤツが居るけど、internetの世界でどんなにルーターを経由しても、せいぜい30程度らしい。なので、おおよその検討が付くってのは正しいらしい。 大事なのは、TTLは要求を出した相手から帰ってくるdataに付いてくるものだってトコ。相手からのresponseが返ってくる最中にルーターを経由すると減ってって、その減った値が自分に届くって事を忘れないように。 ・metric 経路の最適化度って言えば良いんかな?A~Bの間にあるルーターの数。 ルーターの数が多い→遠回りな効率の悪いルート。 ルーターの数が少ない→効率が良いルート。 metricが小さいほど効率の良いルートとされる。 ・IPv4 address class Class 開始 終了 ネットワークアドレス長 ホストアドレス長 RFC Class A 0.0.0.0 127.255.255.255 8 24 RFC 791 Class B 128.0.0.0 191.255.255.255 16 16 RFC 791 Class C 192.0.0.0 223.255.255.255 24 8 RFC 791 Class D 224.0.0.0 239.255.255.255 RFC 1112 Class E 240.0.0.0 255.255.255.255 RFC 1112 クラス 開始 終了 0.0.0.0 0.255.255.255 グローバルIP クラスA 1.0.0.0 9.255.255.255 プライベートIP クラスA 10.0.0.0 10.255.255.255 グローバルIP クラスA 11.0.0.0 126.255.255.255 127.0.0.0 127.255.255.255 グローバルIP クラスB 128.0.0.0 172.15.255.255 プライベートIP クラスB 172.16.0.0 172.31.255.255 グローバルIP クラスB 172.32.0.0 191.255.255.255 グローバルIP クラスC 192.0.0.0 192.167.255.255 プライベートIP クラスC 192.168.0.0 192.168.255.255 グローバルIP クラスC 192.169.0.0 223.255.255.255 224.0.0.0 255.255.255.255 プライベートIP クラスA 10.0.0.0 10.255.255.255 クラスB 172.16.0.0 172.31.255.255 クラスC 192.168.0.0 192.168.255.255 グローバルIP クラスA 1.0.0.0 9.255.255.255 クラスA 11.0.0.0 126.255.255.255 クラスB 128.0.0.0 172.15.255.255 クラスB 172.32.0.0 191.255.255.255 クラスC 192.0.0.0 192.167.255.255 クラスC 192.169.0.0 223.255.255.255 0.0.0.0 0.255.255.255 127.0.0.0 127.255.255.255 224.0.0.0 255.255.255.255 更新日: 2023年06月15日 (木) 16時25分05秒 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/kplus/pages/58.html
HTML色名 2ページ目 色名 コード 16進 RGB white #FFFFFF FF FF FF 255 255 255 ivory #FFFFF0 FF FF F0 255 255 240 lightyellow #FFFFE0 FF FF E0 255 255 224 yellow #FFFF00 FF FF 00 255 255 0 snow #FFFAFA FF FA FA 255 250 250 floralwhite #FFFAF0 FF FA F0 255 250 240 lemonchiffon #FFFACD FF FA CD 255 250 205 cornsilk #FFF8DC FF F8 DC 255 248 220 seashell #FFF5EE FF F5 EE 255 245 238 lavenderblush #FFF0F5 FF F0 F5 255 240 245 papayawhip #FFEFD5 FF EF D5 255 239 213 blanchedalmond #FFEBCD FF EB CD 255 235 205 mistyrose #FFE4E1 FF E4 E1 225 228 225 bisque #FFE4C4 FF E4 C4 255 228 196 moccasin #FFE4B5 FF E4 B5 255 228 181 navajowhite #FFDEAD FF DE AD 255 222 173 peachpuff #FFDAB9 FF DA B9 255 218 185 gold #FFD700 FF D7 00 255 215 0 pink #FFC0CB FF C0 CB 255 192 203 lightpink #FFB6C1 FF B6 C1 255 182 193 orange #FFA500 FF A5 00 255 165 0 lightsalmon #FFA07A FF A0 7A 255 160 122 darkorange #FF8C00 FF 8C 00 255 140 0 coral #FF7F50 FF 7F 50 255 127 80 hotpink #FF69B4 FF 69 B4 255 105 180 tomato #FF6347 FF 63 47 255 99 71 orangered #FF4500 FF 45 00 255 69 0 deeppink #FF1493 FF 14 93 255 20 147 magenta #FF00FF FF 00 FF 255 0 255 fuchsia #FF00FF FF 00 FF 255 0 255 red #FF0000 FF 00 00 255 0 0 oldlace #FDF5E6 FD F5 E6 253 245 230 lightgoldenrodyellow #FAFAD2 FA FA D2 250 250 210 linen #FAF0E6 FA F0 E6 250 240 230 antiquewhite #FAEBD7 FA EB D7 250 235 215 salmon #FA8072 FA 80 72 250 128 114 ghostwhite #F8F8FF F8 F8 FF 248 248 255 mintcream #F5FFFA F5 FF FA 245 255 250 whitesmoke #F5F5F5 F5 F5 F5 245 245 245 beige #F5F5DC F5 F5 DC 245 245 220 wheat #F5DEB3 F5 DE B3 245 222 179 sandybrown #F4A460 F4 A4 60 244 164 96 azure #F0FFFF F0 FF FF 250 255 255 honeydew #F0FFF0 F0 FF F0 240 255 240 aliceblue #F0F8FF F0 F8 FF 240 248 255 khaki #F0E68C F0 E6 8C 240 230 140 lightcoral #F08080 F0 80 80 240 128 128 palegoldenrod #EEE8AA EE E8 AA 238 232 170 violet #EE82EE EE 82 EE 238 130 238 darksalmon #E9967A E9 96 7A 233 150 122 lavender #E6E6FA E6 E6 FA 230 230 250 lightcyan #E0FFFF E0 FF FF 224 255 255 burlywood #DEB887 DE B8 87 222 184 135 plum #DDA0DD DD A0 DD 221 160 221 gainsboro #DCDCDC DC DC DC 220 220 220 crimson #DC143C DC 14 3C 220 20 60 palevioletred #DB7093 DB 70 93 219 112 147 goldenrod #DAA520 DA A5 20 218 165 32 orchid #DA70D6 DA 70 D6 218 112 214 thistle #D8BFD8 D8 BF D8 216 191 216 lightgrey #D3D3D3 D3 D3 D3 211 211 211 tan #D2B48C D2 B4 8C 210 180 140 chocolate #D2691E D2 69 1E 210 105 30 peru #CD853F CD 85 3F 205 133 65 indianred #CD5C5C CD 5C 5C 205 92 92 mediumvioletred #C71585 C7 15 85 199 21 133 silver #C0C0C0 C0 C0 C0 192 192 192 darkkhaki #BDB76B BD B7 6B 189 183 107 rosybrown #BC8F8F BC 8F 8F 188 143 143 mediumorchid #BA55D3 BA 55 D3 186 85 211 darkgoldenrod #B8860B B8 86 0B 184 134 11 firebrick #B22222 B2 22 22 178 34 34 powderblue #B0E0E6 B0 E0 E6 176 224 230 lightsteelblue #B0C4DE B0 C4 DE 176 196 222 paleturquoise #AFEEEE AF EE EE 175 238 238 greenyellow #ADFF2F AD FF 2F 173 255 47 lightblue #ADD8E6 AD D8 E6 173 216 230 darkgray #A9A9A9 A9 A9 A9 169 169 169 brown #A52A2A A5 2A 2A 165 42 42 sienna #A0522D A0 52 2D 160 82 45 yellowgreen #9ACD32 9A CD 32 154 205 50 darkorchid #9932CC 99 32 CC 153 50 204 palegreen #98FB98 98 FB 98 152 251 152 darkviolet #9400D3 94 00 D3 148 0 211 mediumpurple #9370DB 93 70 DB 147 112 219 lightgreen #90EE90 90 EE 90 144 238 144 darkseagreen #8FBC8F 8F BC 8F 143 188 143 saddlebrown #8B4513 8B 45 13 139 69 19 darkmagenta #8B008B 8B 00 8B 139 0 139 darkred #8B0000 8B 00 00 139 0 0 blueviolet #8A2BE2 8A 2B E2 138 43 226 lightskyblue #87CEFA 87 CE FA 135 206 250 skyblue #87CEEB 87 CE EB 135 206 235 gray #808080 80 80 80 128 128 128 olive #808000 80 80 00 128 128 0 purple #800080 80 00 80 128 0 128 maroon #800000 80 00 00 128 0 0 aquamarine #7FFFD4 7F FF D4 127 255 212
https://w.atwiki.jp/ookowaikowai/pages/31.html
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Net; using System.Net.Sockets; using System.Windows.Forms; using System.Text.RegularExpressions; namespace DesignProject { class UDPMessage { //メッセージの種別 public const int MESSAGE_INT = 0; public const int MESSAGE_STRING = 1; public const int MESSAGE_CHARACTER = 2; public const int MESSAGE_SYSTEM = 3; //システムメッセージの種別 public const int SYSTEM_CONNECT = 0; public const int SYSTEM_CLOSE = 1; public int type { get; private set; } public int dataLength { get; private set; } public byte[] data { get; private set; } public UDPMessage(int type, byte[] data) { this.type = type; this.data = data; this.dataLength = data.Length; } public UDPMessage(byte[] data) { int index = 0; this.type = BitConverter.ToInt32(data, index); index += 4; this.dataLength = BitConverter.ToInt32(data, index); index += 4; this.data = new byte[this.dataLength]; Array.ConstrainedCopy(data, index, this.data, 0, this.dataLength); } public byte[] ToByte() { byte[] result = new byte[4 + 4 + this.dataLength]; int index = 0; byte[] temp = BitConverter.GetBytes(this.type); Array.ConstrainedCopy(temp, 0, result, index, temp.Length); index += temp.Length; temp = BitConverter.GetBytes(this.dataLength); Array.ConstrainedCopy(temp, 0, result, index, temp.Length); index += temp.Length; Array.ConstrainedCopy(this.data, 0, result, index, this.data.Length); return(result); } //データをint型へ変換 public int DataToInt() { return (BitConverter.ToInt32(this.data, 0)); } //データをstring型へ変換 public string DataToString() { Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS"); return (sjisEnc.GetString(this.data, 0, this.dataLength)); } //データをCharacter型へ変換 public Character DataToCharacter() { return(new Character(this.data)); } } class UDPStateObject { public NetworkUDP network; public UDPStateObject(NetworkUDP network) { this.network = network; } } class NetworkUDP { private UdpClient udp; private IPEndPoint remote; public IPEndPoint clientEndPoint { get { return (this.isReceived ? this.remote null); } } //private Queue byte[] sendDataQueue; private Queue byte[] receiveDataQueue; //public int sendCount { get { return (this.sendDataQueue.Count); } } public int receiveCount { get { return (this.receiveDataQueue.Count); } } private Thread receiveThread; public bool isReceived { get; private set; } public bool isClientEnd { get; private set; } public bool isReceiving { get; private set; } public NetworkUDP(int port) { this.udp = new UdpClient(port); //this.sendDataQueue = new Queue byte[] (); this.receiveDataQueue = new Queue byte[] (); this.receiveThread = null; this.isReceived = false; this.isClientEnd = false; this.isReceiving = false; } public void Close() { Console.WriteLine("CloseClient "); this.isClientEnd = true; if (this.isReceiving) { this.receiveThread.Abort(); this.receiveThread.Join(); } this.udp.Close(); } private void Send(byte[] data, IPEndPoint endPoint) { Console.WriteLine("SendStart"); this.udp.Send(data, data.Length, endPoint); Console.WriteLine("SendEnd"); } //public void Send(byte[] data, string ipAddress, int port) //{ // Send(data, new IPEndPoint(IPAddress.Parse(ipAddress), port)); //} //public void Send(int data, string ipAddress, int port) //{ // Send(BitConverter.GetBytes(data), new IPEndPoint(IPAddress.Parse(ipAddress), port)); //} private void StartSend(byte[] data, IPEndPoint endPoint) { Console.WriteLine("SendStart"); this.udp.BeginSend(data, data.Length, new AsyncCallback(SendCallback), new UDPStateObject(this)); } private static void SendCallback(IAsyncResult ar) { UDPStateObject state = (UDPStateObject)(ar.AsyncState); if (!state.network.isClientEnd) { try { int sendBytes = state.network.udp.EndSend(ar); Console.WriteLine("SendEnd " + sendBytes); } catch (Exception e) { Console.WriteLine(e.Message + e.TargetSite); } } } //int型のデータ送信用 public void SendIntMessage(int data, IPEndPoint endPoint) { UDPMessage message = new UDPMessage(UDPMessage.MESSAGE_INT, BitConverter.GetBytes(data)); Send(message.ToByte(), endPoint); } //string型のデータ送信用 public void SendStringMessage(string data, IPEndPoint endPoint) { Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS"); UDPMessage message = new UDPMessage(UDPMessage.MESSAGE_STRING, sjisEnc.GetBytes(data)); Send(message.ToByte(), endPoint); } //Character型のデータ送信用 public void SendCharacterMessage(Character data, IPEndPoint endPoint) { UDPMessage message = new UDPMessage(UDPMessage.MESSAGE_SYSTEM, data.ToByte()); Send(message.ToByte(), endPoint); } //システムメッセージ送信用 public void SendSystemMessage(int data, IPEndPoint endPoint) { UDPMessage message = new UDPMessage(UDPMessage.MESSAGE_SYSTEM, BitConverter.GetBytes(data)); Send(message.ToByte(), endPoint); } private void StartReceive() { if (!this.isClientEnd) { this.udp.BeginReceive(ReceiveCallback, new UDPStateObject(this)); } } private static void ReceiveCallback(IAsyncResult ar) { UDPStateObject state = (UDPStateObject)(ar.AsyncState); if (!state.network.isClientEnd) { try { byte[] data = state.network.udp.EndReceive(ar, ref state.network.remote); state.network.receiveDataQueue.Enqueue(data); //state.network.data = state.network.udp.EndReceive(ar, ref state.network.remote); //Console.WriteLine(Encoding.ASCII.GetString(data, 0, data.Length)); Console.WriteLine(BitConverter.ToString(data)); Console.WriteLine("Received from " + state.network.remote.Address + " " + state.network.remote.Port); state.network.isReceived = true; } catch (Exception e) { Console.WriteLine(e.Message + e.TargetSite); } } } private void RunReceive() { while (true) { StartReceive(); Thread.Sleep(100); } } public void StartReceiveThread() { this.receiveThread = new Thread(new ThreadStart(this.RunReceive)); this.receiveThread.Start(); this.isReceiving = true; Console.WriteLine("ReceiveStart"); } public byte[] GetReceiveData() { if (this.receiveDataQueue.Count != 0) { return (this.receiveDataQueue.Dequeue()); } return (null); } public UDPMessage GetReceiveMessage() { if (this.receiveDataQueue.Count != 0) { return (new UDPMessage(this.receiveDataQueue.Dequeue())); } return (null); } static string clip = ""; static void GetClipboardText() { if (Clipboard.ContainsText()) { clip = Clipboard.GetText(); } } public static IPEndPoint GetClipIP() { Thread t = new Thread(GetClipboardText); t.SetApartmentState(ApartmentState.STA); t.Start(); t.Join(); Regex regex = new Regex("(([0-9]{1,3})([.])([0-9]{1,3})([.])([0-9]{1,3})([.])([0-9]{1,3}))([ ])([0-9]{1,5})"); if (regex.IsMatch(clip)) { string ip = regex.Match(clip).Groups[1].ToString(); string port = regex.Match(clip).Groups[10].ToString(); //Console.WriteLine(ip + " " + port); return (new IPEndPoint(IPAddress.Parse(ip), int.Parse(port))); } return(null); } public static void SetClipboardText() { Clipboard.SetText(GlobalIP.GetGIP.Get().ToString() + " " + "10800"); } public static void SetClipIP() { Thread t = new Thread(SetClipboardText); t.SetApartmentState(ApartmentState.STA); t.Start(); t.Join(); } public static int[] GetIPArray(IPEndPoint ip) { int[] ipport = new int[17]; string str = ip.ToString(); int writeIndex = 0; //int section = 2; Regex regex = new Regex("(([0-9]{1,3})([.])([0-9]{1,3})([.])([0-9]{1,3})([.])([0-9]{1,3}))([ ])([0-9]{1,5})"); if (regex.IsMatch(str)) { for (int section = 2; section 10; section += 2) { string num = regex.Match(str).Groups[section].Value; for (int i = 0; i num.Length; i++) { ipport[writeIndex * 3 + 3 - num.Length + i] = int.Parse(num[i].ToString()); } writeIndex += 1; } string port = regex.Match(str).Groups[10].Value; for (int i = 0; i port.Length; i++) { ipport[12 + i] = int.Parse(port[i].ToString()); } } //for (int i = 0; i 17; i++) //{ // Console.WriteLine(ipport[i]); //} return (ipport); } public static IPEndPoint GetIPFromArray(int[] array) { string ip = ""; for (int i = 0; i 4; i++) { if(i != 0){ ip += "."; } for (int j = 0; j 3; j++) { if (!((j == 0) (array[i * 3 + j].ToString().Equals("0")))) { ip += array[i * 3 + j].ToString(); } } } string port = ""; for(int i = 0; i 5; i ++){ port += array[12 + i].ToString(); } return (new IPEndPoint(IPAddress.Parse(ip), int.Parse(port))); } public static string GetIPStringFromArray(int[] array) { string ip = ""; for (int i = 0; i 4; i++) { if (i != 0) { ip += "."; } for (int j = 0; j 3; j++) { ip += array[i * 3 + j].ToString(); } } string port = ""; for (int i = 0; i 5; i++) { port += array[12 + i].ToString(); } return (ip + " " + port); } } }